Lombok ile Entity Sınıfı Oluşturma (Spring Boot & JPA Rehberi)
Bu rehberde Lombok ile entity sınıfı oluşturma konusunu detaylı şekilde ele alıyoruz. Spring Boot + JPA projelerinde Lombok kullanarak boilerplate kodu azaltmayı, kod okunabilirliğini artırmayı ve bakım maliyetini düşürmeyi öğreneceksiniz.
Entity Sınıfı Nedir?
Entity sınıfları, veritabanı tablolarını Java nesneleri olarak temsil eder. Spring Boot projelerinde genellikle JPA (Java Persistence API) ile kullanılır.
Örneğin bir Student tablosu için aşağıdaki alanları içeren bir entity oluşturabiliriz:
- studentId
- firstName
- lastName
- address
- phoneNumber
Bu sınıflarda çoğu zaman getter, setter, constructor gibi tekrar eden boilerplate kodlar bulunur.
Lombok Kütüphanesi Nedir?
Lombok, Java projelerinde tekrar eden kodları otomatik üretmeye yarayan bir kütüphanedir.
Aşağıdaki anotasyonlar Lombok sayesinde otomatik oluşturulur:
- @Getter
- @Setter
- @ToString
- @EqualsAndHashCode
- @NoArgsConstructor
- @AllArgsConstructor
Bu sayede kodunuz:
- daha kısa
- daha okunabilir
- daha az hataya açık
Lombok Kullanmadan Entity Sınıfı
public class Student {
private Long studentId;
private String firstName;
private String lastName;
private String address;
private String phoneNumber;
public Student(){}
public Student(Long studentId,String firstName,
String lastName,String address,
String phoneNumber){
this.studentId = studentId;
this.firstName = firstName;
this.lastName = lastName;
this.address = address;
this.phoneNumber = phoneNumber;
}
}
Görüldüğü gibi basit bir entity için bile oldukça fazla kod yazılması gerekiyor.
Lombok ile Entity Sınıfı
Lombok Maven Bağımlılığı
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
Lombok Kullanarak Student Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private Long studentId;
private String firstName;
private String lastName;
private String address;
private String phoneNumber;
}
Bu şekilde Lombok kullanarak çok daha kısa ve temiz bir entity sınıfı elde edebilirsiniz.
JPA + Lombok Best Practices
@Data anotasyonu önerilmez.
Çünkü equals, hashCode ve toString metotları JPA ilişkilerinde performans ve döngü sorunlarına neden olabilir.
JPA Uyumlu Lombok Kullanımı
@Entity
@Table(name="students")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "studentNumber")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable=false,unique=true)
private String studentNumber;
private String firstName;
private String lastName;
private String address;
private String phoneNumber;
}
Önerilen Pratikler
- Entity içinde @Data kullanmaktan kaçının
- equals/hashCode için iş anahtarı kullanın
- Entity yerine API katmanında DTO kullanın
- Lazy ilişkilerde toString döngülerine dikkat edin
Sık Sorulan Sorular
Lombok performansı etkiler mi?
Hayır. Lombok derleme zamanında kod üretir. Runtime performansına etkisi yoktur.
Entity içinde @Builder kullanılır mı?
Evet kullanılabilir ancak JPA için mutlaka parametresiz constructor bulunmalıdır.
Entity için en güvenli Lombok anotasyonları hangileri?
Genellikle aşağıdaki kombinasyon önerilir:
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
Sonuç
Lombok ile entity sınıfı oluşturmak, Spring Boot ve JPA projelerinde geliştirme hızını artırır ve gereksiz boilerplate kodu ortadan kaldırır.
Ancak JPA ilişkileri nedeniyle anotasyonları bilinçli kullanmak önemlidir. Doğru kullanıldığında Lombok modern Java projelerinde oldukça güçlü bir araçtır.